/*
Distinct Subsequences
Given a string S and a string T, count the number of distinct subsequences of T in S.

A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ACE" is a subsequence of "ABCDE" while "AEC" is not).

Here is an example:
S = "rabbbit", T = "rabbit"

Return 3.
*/

#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <algorithm>
#include <iomanip>
#include "print.h"
using namespace std;

class Solution {
public:
	int numDistinct(string s, string t) {
		if (s.size() == 0 || t.size() == 0)
		{
			return 0;
		}
		if (s.size() < t.size())
		{
			return 0;
		}
		const int sLen = s.size();
		const int tLen = t.size();

		int **dp;
		dp = new int *[sLen + 1];
		for (int i = 0; i <= sLen; i++)
		{
			dp[i] = new int[tLen+1];
		}

		dp[0][0] = 1;
		for (int i = 0; i <= sLen; i++)
		{
			dp[i][0] = 1;
		}

		for (int j = 1; j <= tLen; j++)
		{
			dp[0][j] = 0;
		}

		for (int i = 1; i <= sLen; i++)
		{
			for (int j = 1; j <= tLen; j++)
			{
	
				if (s[i-1] == t[j-1])
				{
					dp[i][j] = dp[i-1][j]+dp[i - 1][j - 1];
				}
				else
				{
					dp[i][j] = dp[i - 1][j];
				}
			}

		}
		return dp[sLen][tLen];
	}
};

int main()
{
	ifstream filein("data.in");
	ofstream fileout("data.out");

	string s1, s2;
	
	//filein >> s1;
	//filein >> s2;
	//int res;
	Solution s;

	//res = s.numDistinct(s1,s2);

	float temp;
	vector<float> floatVec;
	while (filein>>temp)
	{
		floatVec.push_back(temp);
	}
	//sort(floatVec.begin(),floatVec.end());
	
	//reverse(floatVec.begin(), floatVec.end());


	for (int i = 0; i < floatVec.size(); i++)
	{
		fileout << setiosflags(ios::fixed) << setprecision(1) << floatVec[i] << endl;
	}
	//fileout << res;
	//cout << res << endl;
	//fileout << s1;

	//fileout << s1;

	system("pause");

	return 0;
}